1156515 Logo RH RGB Reverse

Continuous Delivery with JBoss Fuse & Openshift

Christian Posta & Charles Moulliard
DevNation - 23th of June 2015

Who

christian-posta

Principal Middleware Specialist/Architect

Blog: http://christianposta.com/blog

Twitter: @christianposta

Email: christian@redhat.com

  • Committer on Apache Camel, ActiveMQ, Fabric8, PMC on ActiveMQ

  • Author: Essential Camel Components DZone Refcard

  • Frequent blogger and speaker about open-source technology!

Who

cmoulliard

Principal Solution Architect

Blog: http://cmoulliard.github.io

Twitter: @cmoulliard

Email: cmoulliard@redhat.com

  • Committer on Apache Camel, Karaf, Fabric8, Hawtio … & PMC

  • Technology evangelist

  • Mountain Biker, blogger

Agenda

  • The cost of change

  • Microservices

  • Fabric8

  • OpenShift PaaS

  • CI/CD

  • Demo

 

cat

 

1156515 Logo RH RGB Reverse

Cost of change

Cost of change change

  • Development

  • Operational

  • Infrastructure

  • Business requirements

 

believe

Hype all around!

  • Microservices

  • DevOps philosophies

  • Cloud (IaaS, PaaS/iPaaS/mBaaS)

Integration costs

  • Integration is Hard!

  • Different system vintages

  • Mainframe, EAI Hub, MOM, EJB, Web Services

  • Evolving business processes

  • Systems must work together

  • File exchange, Shared Database, Remote Procedure Call (RPC), Messaging

Integration costs

  • Platforms

  • Protocols

  • Data Formats

  • Timing

  • Organizational mismatch

  • Communication

integration

 

1156515 Logo RH RGB Reverse

Technology for Microservice

 

fabric8

Fabric8 v1

  • OpenSource Project

  • Provides centralized configuration

  • Versioning (upgrade/rollback)

  • Visualization of your middleware

fabric-diagram

Fabric8 v1

  • Simplification (deployment & container provisioning)

fabric-diagram1

Zookeeper & Agent

fabric 1
fabric 2

Fabric8 v1

  • Service discovery & smart load balancing

  • Provides cluster capabilities, coordination

fabric camel

Fabric8 v2

  • Extend GOALS of FabricV1

  • Provision Other Java Containers : JBoss EAP, Tomcat, …

  • Rely on a New API & Architecture Design

  • Decouple Devs & Ops

Support Continuous Delivery

cd_process_diagram

Process vs OS

docker_vm_diagram

Docker

docker-logo

  • Container runtime & image distribution

  • Launch Process (cmd/entrypoint)

Docker

docker filesystems multilayer
  • Top of a Union FS mounted with immutable images

  • Benefits: portability, reusability, versioning, application-centric

Kubernetes

  • Runtime & Operational management of containers

  • ApiServer (event, status), Scheduler, Controller & State Storage

  • Agent - Kubelet - manage containers on host

  • Containers pods (= shared docker containers)

kubernetes logo

 

1156515 Logo RH RGB Reverse

Bringing this all together

Platform as a Service

  • Flexible technology options

  • Developer self service

  • Automation, DevOps philosophy

  • Decoupling between operations and developers, reduces coordination

openshift logo

Openshift v3

  • Designed around Kubernetes, Docker & Fabric8

  • Provide additional features : build (STI), deploy, manage & promote

openshift logo

OS3 Architecture

ose-v3

Scale IT Like a Factory with PaaS

openshift-paas

 

1156515 Logo RH RGB Reverse

Dev Ops

 

worked-fine-in-dev

“WTF is DevOps?”

  • IT is a core competency

  • Set of principles

  • There’s more to applications than coding!

  • Feedback

  • Repetition

  • Communication

  • People!

wtf-dev-ops

Continuous Delivery

  • Builds on continuous integration

  • Establish a concrete pipeline to production

  • Build/Test/Release often!

  • Bottlenecks?

  • Involves Dev and Ops to be successful

  • Every build is a “release candidate”

Automate everything!

  • Developers

    • Unit tests

    • Integration tests

    • Builds

    • Deployments in dev

  • Operations

    • VMs

    • Provisioning software

    • Deployments in QA/UAT/PROD

Tools for a CD pipeline

  • Puppet/Chef to provision VMs

  • Git for SCM

  • Gerrit/Gitlab for code reviews

  • Maven

  • Jenkins + plugins

  • and of course… Fabric8!

Fabric8 (new)

  • docker:build

  • docker:push

  • fabric8:json

  • fabric8:create-env

  • fabric8:publish

Sample Flow

  • Check your code in

  • Gerrit for code reviews

  • Jenkins for build + CD pipeline

  • Use fabric8:zip to deploy profiles to Maven repo

  • Use fabric8:branch to automate deploying multiple profiles to QA/UAT/PROD

  • Can use profile-import to manually import zips

  • Build the binary once!

Sample Flow

cd-sample-flow

 

1156515 Logo RH RGB Reverse

Demo …

Questions

questions

  • Twitter : @cmoulliard, @christianposta